package ar.com.seminario.dto;

import java.util.List;
import java.util.Vector;

import ar.com.seminario.model.DetallePerfil;

public class PerfilDto implements Comparable<PerfilDto>{

	/**
	 * Identificador del perfil.
	 */
	private Long Id;

	/**
	 * Nombre del perfil.
	 */
	private String nombre;

	/**
	 * Descripcion del perfil.
	 */
	private String descripcion;

	/**
	 * Lista de detalles del perfil.
	 */
	private List<DetallePerfilDto> detalles;

	/**
	 * Indica si es template.
	 */
	private Boolean esTemplate;

	/**
	 * Constructor por defecto.
	 */
	public PerfilDto() {

	}

	public List<DetallePerfilDto> getDetalles() {
		return detalles;
	}

	public void setDetalles(List<DetallePerfilDto> detalles) {
		this.detalles = detalles;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public Long getId() {
		return Id;
	}

	public void setId(Long id) {
		Id = id;
	}

	public Boolean getEsTemplate() {
		return esTemplate;
	}

	public void setEsTemplate(Boolean esTemplate) {
		this.esTemplate = esTemplate;
	}

	public DetallePerfilDto getDetalle(DetallePerfil detalle) {

			for (DetallePerfilDto detalleDto : this.detalles) {
				if(detalle.getDescripcion().equals(detalleDto.getDescripcion()) &&
					detalle.getGrupoPerfil().equals(detalleDto.getGrupoPerfilId())){
					return detalleDto;
				}
			}
		return null;
	}
	public DetallePerfilDto getDetalle(DetallePerfilDto detalle) {

		for (DetallePerfilDto detalleDto : this.detalles) {
			if(detalle.getDescripcion().equals(detalleDto.getDescripcion()) &&
				detalle.getGrupoPerfilId().equals(detalleDto.getGrupoPerfilId())){
				return detalleDto;
			}
		}
	return null;
}
	public Integer getPuntaje() {
		Integer puntaje = 0;
		for (DetallePerfilDto detalle : detalles) {
			puntaje =+ detalle.getEvaluacion();
		}
		return puntaje;
	}

	public  Integer getPuntajeComparado(PerfilDto aComparar){
		Integer resultado = 0;
		for(DetallePerfilDto detalle: this.detalles){
			if(detalle.getEsObligatorio()){
			resultado =+ aComparar.getDetalle(detalle).getValor();
			}else{
			resultado =(int) (+ aComparar.getDetalle(detalle).getValor() * 0.5f);
				
			}
			
		}
		return resultado;
	}
	


	public int compareTo(PerfilDto o) {
		
		return this.getPuntaje() - o.getPuntaje();
	}

}
